apt download下载离线安装包
·
Table of Contents
方案一:yum / apt 下载离线包(推荐新手)
CentOS / RHEL(下载 rpm 包)
# 首先安装 yum-plugin-downloadonly 插件
yum install yum-plugin-downloadonly -y
# 使用下面命令下载指定的包及其依赖项
yum install --downloadonly 软件包名
# 例如:下载nginx
yum install --downloadonly nginx
# 默认下载路径
ll /var/cache/yum/x86_64/7/base/packages
ll /var/cache/yum/x86_64/7/epel/packages
# 指定下载路径(推荐)
yum install --downloadonly --downloaddir=/data/pkgs/nginx/ nginx
# 参数解释
--downloadonly # 只下载包不安装
--downloaddir=/your/custom/path/ # 指定下载路径
# 查看下载后的包
ls /data/pkgs/nginx/
# centos-indexhtml-7-9.el7.centos.noarch.rpm
# gperftools-libs-2.6.1-1.el7.x86_64.rpm
# nginx-1.20.1-10.el7.x86_64.rpm
# nginx-filesystem-1.20.1-10.el7.noarch.rpm
# openssl11-libs-1.1.1k-7.el7.x86_64.rpm
# 打包传输到内网
cd /data/pkgs/
tar -czf nginx-offline.tar.gz nginx/
========== 内网机器安装 ==========
# 解压后进入目录
tar -xzf nginx-offline.tar.gz
cd nginx/
# 方法1:使用rpm命令
rpm -ivh *.rpm
# 方法2:使用yum localinstall(推荐,自动处理依赖)
yum localinstall -y *.rpm
Ubuntu / Debian(下载 deb 包)
# 下载deb包
apt --download-only install 软件包名
# 例如:下载nginx
apt --download-only install nginx
# 默认下载路径
ll /var/cache/apt/archives/
# 指定下载路径
mkdir -p /data/pkgs/nginx
apt -o dir::cache::archives="/data/pkgs/nginx" install --download-only nginx
# 参数解释
--download-only # 只下载包不安装
-o dir::cache::archives="/your/custom/path" # 指定下载路径
# 打包传输
cd /data/pkgs/
tar -czf nginx-offline.tar.gz nginx/
========== 内网机器安装 ==========
tar -xzf nginx-offline.tar.gz
cd nginx/
# 安装所有deb包
dpkg -i *.deb
# 如果遇到依赖问题,执行
apt install -f
openSUSE / SUSE(下载 rpm 包)
# 下载包及依赖
zypper install --download-only 软件包名
# 例如:下载nginx
zypper install --download-only nginx
# 默认下载路径
ll /var/cache/zypp/packages/
# 指定下载目录
zypper --pkg-cache-dir=/data/pkgs/nginx install --download-only nginx
========== 内网机器安装 ==========
cd /data/pkgs/nginx/
rpm -ivh *.rpm
# 或
zypper install --no-refresh *.rpm
Alpine Linux(下载 apk 包)
# 下载包到指定目录
apk fetch --recursive --output /data/pkgs/nginx/ nginx
# 参数解释
--recursive # 下载所有依赖
--output # 指定输出目录
========== 内网机器安装 ==========
cd /data/pkgs/nginx/
apk add --allow-untrusted *.apk
方案二:同步完整仓库(适合大规模内网环境)
如果内网机器很多,每次都手动下载包太麻烦。可以搭建本地 yum/apt 仓库。
CentOS 使用 reposync 同步仓库
# 安装同步工具
yum install yum-utils createrepo -y
# 同步base仓库(根据需要选择仓库)
reposync -r base -p /data/local-repo/
# 同步epel仓库
reposync -r epel -p /data/local-repo/
# 创建仓库元数据
createrepo /data/local-repo/base/
createrepo /data/local-repo/epel/
# 打包传输到内网
cd /data/
tar -czf local-repo.tar.gz local-repo/
========== 内网机器配置本地仓库 ==========
# 解压仓库文件
tar -xzf local-repo.tar.gz -C /data/
# 配置yum源
cat > /etc/yum.repos.d/local.repo <<EOF
[local-base]
name=Local Base Repository
baseurl=file:///data/local-repo/base
enabled=1
gpgcheck=0
[local-epel]
name=Local EPEL Repository
baseurl=file:///data/local-repo/epel
enabled=1
gpgcheck=0
EOF
# 清理缓存并测试
yum clean all
yum makecache
yum repolist
Ubuntu 使用 apt-mirror 同步仓库
# 安装同步工具
apt install apt-mirror -y
# 编辑配置文件
vim /etc/apt/mirror.list
# 修改内容如下:
set base_path /data/apt-mirror
deb http://mirrors.aliyun.com/ubuntu focal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu focal-updates main restricted universe multiverse
# 开始同步(注意:完整同步需要很大空间,100GB+)
apt-mirror
# 打包核心部分传输到内网
cd /data/apt-mirror/mirror/mirrors.aliyun.com/
tar -czf ubuntu-repo.tar.gz ubuntu/
========== 内网机器配置本地源 ==========
# 配置本地源
cat > /etc/apt/sources.list <<EOF
deb [trusted=yes] file:///data/ubuntu-repo focal main restricted universe multiverse
deb [trusted=yes] file:///data/ubuntu-repo focal-updates main restricted universe multiverse
EOF
# 更新并测试
apt update
方案三:容器镜像离线导入(适合容器化应用)
========== 联网机器操作 ==========
# 拉取镜像
docker pull nginx:latest
docker pull mysql:8.0
# 导出镜像为tar文件
docker save nginx:latest -o nginx-latest.tar
docker save mysql:8.0 -o mysql-8.0.tar
# 或批量导出
docker save $(docker images -q) -o all-images.tar
========== 内网机器操作 ==========
# 导入镜像
docker load -i nginx-latest.tar
docker load -i mysql-8.0.tar
# 查看导入的镜像
docker images
# 使用镜像
docker run -d -p 80:80 nginx:latest
常见问题排查
问题1:依赖包版本冲突
- 症状:安装时提示依赖版本不匹配
- 解决:强制安装或降级
rpm -ivh --force --nodeps xxx.rpm # 不推荐,可能导致系统问题
# 更好的办法:在联网机器上模拟内网环境再下载
yum --installroot=/data/test-env install nginx
问题2:内网机器系统版本和联网机器不一致
- 症状:下载的包在内网无法安装
- 解决:确保两边系统版本一致
cat /etc/os-release # 查看系统版本
# 或者使用Docker容器模拟相同环境下载
docker run -it --rm -v /data/pkgs:/pkgs centos:7 bash
yum install --downloadonly --downloaddir=/pkgs/nginx nginx
问题3:下载的包不全,安装时还是提示缺依赖
- 原因:可能是内网机器已安装的包版本和下载的依赖不匹配
- 解决:使用 yumdownloader 下载所有依赖
yum install yum-utils -y
yumdownloader --resolve --destdir=/data/pkgs/nginx nginx
# 参数解释
--resolve # 解析并下载所有依赖
--destdir # 指定下载目录
实用技巧总结
- 模拟内网环境下载
- 在联网机器上创建和内网相同的干净环境
docker run -it --rm -v /data:/data centos:7 bash
- 在容器内下载,确保依赖准确
- 批量下载多个软件
- 创建软件列表
cat > software-list.txt <<EOF
nginx
mysql-server
git
vim
EOF
- 批量下载
while read pkg; do
yum install --downloadonly --downloaddir=/data/pkgs/$pkg $pkg
done < software-list.txt
- 检查下载是否完整
- 列出所有rpm包及依赖关系
rpm -qpR /data/pkgs/nginx/*.rpm